/**
 * Projeto Myou - Disciplina: Sistemas de Informação I
 * @author Ronycley Gonçalves Agra
 * @since 23/09/2011
 */
package myou.classes;

import java.util.ArrayList;
import java.util.List;
/**
 * Classe que encapsula o comportamento de um Usuario
 * @author Ronycley Gonçalves Agra
 * @version 1.0
 * @since Milestone 1 23/09/2011 
 * @see myou.classes.Sistema
 * @see myou.classes.Interesse
 * @see myou.classes.Emprestimo
 * @see myou.classes.Mensagem
 * @see myou.classes.Item
 * @see myou.classes.RequisicaoDeAmizade
 * @see myou.classes.RequisicaoDeEmprestimo
 * @see myou.classes.Sessao
 * @see myou.classes.Topico
 */
public class Usuario {
	
	private String login;
	private String nome;
	private String endereco;
	private List<Usuario> amigos;
	private List<Emprestimo> emprestimos;
	
	/**
	 * Constutor
	 * @param login O login do usuário
	 * @param nome O nome do usuário
	 * @param endereco O endereco do usuário
	 */
	public Usuario(String login, String nome, String endereco) {
		this.login = login;
		this.nome = nome;
		this.endereco = endereco;
		this.amigos = new ArrayList<Usuario>();
		this.emprestimos = new ArrayList<Emprestimo>();
	}

	/**
	 * Retorna o login do usuário
	 * @return O login do usuário
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * Modifica o login do usuário
	 * @param login O novo login do usuário
	 */
	public void setLogin(String login) {
		this.login = login;
	}

	/**
	 * Retorna o nome do usuário
	 * @return O nome do usuário
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Modifica o nome do usuário
	 * @param nome O novo nome do usuário
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * Retorna o endereco do usuário
	 * @return O endereco do usuário
	 */
	public String getEndereco() {
		return endereco;
	}

	/**
	 * Modifica o endereço do usuário
	 * @param endereco O novo endereço do usuário
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	/**
	 * Retorna a lista dos amigos do usuário
	 * @return A lista dos amigos do usuário
	 */
	public List<Usuario> getAmigos() {
		return amigos;
	}

	/**
	 * Modifia os amigos do usuario
	 * @param amigos A lista com os novos amigos do usuário
	 */
	public void setAmigos(List<Usuario> amigos) {
		this.amigos = amigos;
	}
	
	/**
	 * Adiciona um amigo ao usuário
	 * @param amigo O amigo a ser adicionado
	 */
	public void addAmigo(Usuario amigo){
		this.amigos.add(amigo);
	}

	/**
	 * Retorna a lista de empréstimos do usuário
	 * @return A lista de empréstimos do usuários
	 */
	public List<Emprestimo> getEmprestimos() {
		return emprestimos;
	}

	/**
	 * Modifica os empréstimos do usuário
	 * @param emprestimos A lista com os novos empréstimos do usuário
	 */
	public void setEmprestimos(List<Emprestimo> emprestimos) {
		this.emprestimos = emprestimos;
	}
	
	/**
	 * Adiciona um empréstimo ao usuário
	 * @param emprestimo O empréstimo a ser adicionado
	 */
	public void addEmprestimo(Emprestimo emprestimo){
		this.emprestimos.add(emprestimo);
	}
}
